Data storage systems, such as disk drives, need to be able to accurately detect data that has been stored on a storage media. For example, in a magnetic disk drive system, data is stored as a coded series (i.e., a binary series) of magnetic transitions recorded on the surface of a magnetic disk. The read signal, formed by reading the recorded transitions, is often distorted. Some distortion can be deterministic due to geometry of the head/media system, while other distortion can be variable due to proximity of other transitions, localized deformities in the media, and irregular grain structure of the media. In addition, noise may be added to the read signal from head (transducer) resistance, cable parasitics, and interference from other electronics. Collectively, noise and variable distortion tend to obscure the data within the read signal.
To compensate for the occurrence of errors in a read signal, most data storage systems use an encoder to apply error correction coding to the data before it is stored on a media. The read signal is sampled, and a decoder is used to attempt to detect and correct errors in the sampled signal.
A major source of impairments in magnetic recording channels is the limited bandwidth of the heads and the media compared with the data rate which produces inter symbol interference (ISI). The Viterbi detector is a known technique for removing ISI in an optimum manner. The complexity of the Viterbi detector increases exponentially with the length of the ISI, so the Viterbi detector is usually combined with a finite impulse response (FIR) filter. The FIR filter reduces the ISI length by shaping the channel pulse response to some short well-controlled partial response target. The length of the target k is called the constraint length of the (filtered) channel, and m=k−1 is the channel memory length, where k is usually less than 5 for manageable complexity of the detector.
An ISI channel with memory length m can be represented by a trellis diagram of 2m states, each state corresponding to the delayed input bits. Referring to FIGS. 1 and 2, an exemplary trellis of the channel of target 1-D (FIG. 1) having two states, “state 0” and “state 1”, is shown. Each state is reachable by two previous states given an input bit, and each state can lead to two different states given 0 or 1 as the input bit. A path in the trellis composed of N sections (or levels) can represent a data block of N bits and the corresponding noiseless readback sequence. A Viterbi algorithm uses the trellis diagram of an ISI channel to determine the most likely input sequence by computing the transition probability from each of the states to the next set of states, in view of what is observed or read-back in the presence of channel noise. The probabilities are represented by quantities called metrics. If metrics are defined to be proportional to the negative of the logarithm of the probability, adding of the metrics is equivalent to the reciprocal of the product of the probabilities. Thus, smaller metrics correspond to higher probability events.
Two types of metrics are state metrics, sometimes called path metrics, and branch metrics. A state metric represents the maximum probability that the set of read-back symbols leads to the state with which it is associated. A branch metric represents the conditional probability of the read-back symbol given that the transition from one state to another occurred.
There are two possible states leading to any given state, each corresponding to the occurrence of a zero or a one in the highest ordered memory unit of the channel (the right most register referring to FIG. 1). A detector decides which is the more likely state by an add-compare-select (ACS) operation. Add refers to adding each state metric at the preceding level to the two branch metrics of the branches for the allowable transitions. Compare refers to comparing the pair of such metric sums for paths entering a state (node) at the given level. Select refers to selecting the higher probable one of the two possible states and discarding the other. Thus, only the winning branch is preserved at each node, along with the node state metric. If the two quantities being compared are equal, either branch may be selected, because the probability of an erroneous selection will be the same in either case.
A practical Viterbi detector works on a window size of W, where W>=C and C is the convergence length, which may be 4 to 5 times the memory length of the channel. After the first W trellis sections are processed, the detector compares the 2 state metrics at the window boundary and the most probable state is selected. A chain back operation is then performed from that state, and the hard decision on the input bit related to the leftmost section can be obtained. Afterwards, the processing window is shifted one section to the right, and the next input bit can be determined in the same manner. It shall be appreciated that each hard decision is made with a fixed lag of W sections for reliable output after sufficient convergence.
A soft detector not only outputs hard decisions, but also outputs soft decision values. The sign of each soft decision value can indicate the hard decision (i.e., logic zero or logic one), and the magnitude of the soft decision value can indicate the level of confidence in the hard decision. A soft detector and soft decoder combination utilizes the soft values to improve the system performance.
Soft detection can be computationally intensive and uses more memory than hard detection. For these and other reasons, soft detectors can be difficult to implement in high input/output data bandwidth data storage systems.
The maximum a posteriori (MAP) algorithm is one type of algorithm that generates soft decision values based on a memory system (e.g., an ISI channel, or a convolutional code). As used herein, ‘MAP’ includes its simplified versions, which include the logarithm domain or log-MAP, and min-sum type algorithms. The log-MAP and its simplified versions are not distinguished herein because they can include the same or similar major functional blocks. It is observed that: 1) the MAX function in max-log-MAP is more accurately replaced by MAX* function in log-MAP using a correction term which is usually implemented in a look-up-table; 2) the difference between the max-log-MAP and the min-sum algorithms lies in the choices of branch metrics, so that the most probable event has the largest path metric in the max-log-MAP algorithms and the smallest in the min-sum algorithm.